# ferreus_orbit Plugins for Lenovo "ThinkSystem SR665"

fo_load_storcli

fo_get_sorted_name(){
  local id=$(fo_get_id)
  if [ "$USE_FO_NAME" -lt 1 ]; then
    echo sd$(fo_get_dev_letter ${id})
  else
    echo "Disk${id}"
  fi
}

fo_get_did(){
  local host=$(echo $DEVPATH | cut -d/ -f6)
  if [ "${host}" == "host0" ];then
    local id=$(fo_get_id $1)
    local did=$(cat ${FO_CACHE_FILE_STORCLI}|jq -r ".[]|to_entries[]|select(.key==0).value|select(.[\"EID:Slt\"]|endswith(\":${id}\")).DID")
    if [ -z "$did" ]; then
      let "id = id + 12"
      local did=$(cat ${FO_CACHE_FILE_STORCLI}|jq -r ".[]|to_entries[]|select(.key==0).value|select(.[\"EID:Slt\"]|endswith(\":${id}\")).DID")
    fi
    if [ -z "$did" ]; then
      let "id = id + 84"
      local did=$(cat ${FO_CACHE_FILE_STORCLI}|jq -r ".[]|to_entries[]|select(.key==0).value|select(.[\"EID:Slt\"]|endswith(\":${id}\")).DID")
    fi
    echo $did
  else
    echo
  fi
}

fo_get_id(){
  local host=$(echo $DEVPATH | cut -d/ -f6)
  if [ "${host}" == "host0" ];then
    local scsi=$(echo "$DEVPATH" | cut -d/ -f8)
    sg=$(ls "/sys/class/scsi_disk/${scsi}/device/scsi_generic")
    sc=$(echo ${sg}|awk -F 'sg' '{print $2}')
    let "id = sc - 1"
  else
    local scsi=$(echo "$DEVPATH" | cut -d/ -f9)
    sg=$(ls "/sys/class/scsi_disk/${scsi}/device/scsi_generic")
    sc=$(echo ${sg}|awk -F 'sg' '{print $2}')
    let "id = sc - 1"
  fi
  echo $id
}

fo_build_dispo(){
  if [ "$USE_FO_NAME" -ne 1 ]; then
    for i in $(seq 0 15);do
    let "j = i + 2"
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{Disk${i}}/{sd$(fo_get_dev_letter ${j})}/g")
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{SN_Disk${i}}/{SN_sd$(fo_get_dev_letter ${j})}/g")
    done
  fi
}

FO_DISPOSITION="""
HDD disposition (Front Panel)
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk0}|{Disk3}|{Disk6}|{Disk9}|
|{SN_Disk0}|{SN_Disk3}|{SN_Disk6}|{SN_Disk9}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk1}|{Disk4}|{Disk7}|{Disk10}|
|{SN_Disk1}|{SN_Disk4}|{SN_Disk7}|{SN_Disk10}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk2}|{Disk5}|{Disk8}|{Disk11}|
|{SN_Disk2}|{SN_Disk5}|{SN_Disk8}|{SN_Disk11}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯

HDD disposition (Rear Panel):
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk12}|{Disk13}|{Disk14}|{Disk15}|
|{SN_Disk12}|{SN_Disk13}|{SN_Disk14}|{SN_Disk15}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯
"""
 
